package com.cp.admin.api.utils;

import com.alibaba.fastjson.JSON;
import com.cp.admin.api.entity.vo.UserInfoVO;
import com.cp.admin.modular.constant.Constant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/*
*
 * @Description ：
 * @Author ：
 * @Date ： 2019/03/20 11:01

*/

@Component
public class RedisUtils {

    //@Autowired
    @Resource
    private RedisTemplate<String, String> redisTemplate;

/**
     * 设置用户信息
     * @param userDTO
     */

    public void setUser(UserInfoVO userDTO){
        redisTemplate.opsForValue().set("user:"+userDTO.getId(), JSON.toJSONString(userDTO), 1, TimeUnit.DAYS);
    }

/**
     * 获取用户信息
     * @param
     * @return
     */

    public UserInfoVO getUser(Long id){
        String redisStr = redisTemplate.opsForValue().get("user:"+id);
        if(StrUtils.isEmpty(redisStr)){
            return null;
        }
        return JSON.parseObject(redisStr, UserInfoVO.class);
    }

/*
*
     * 删除用户信息
     * @param userId

*/

    public void delUser(Long id) {
        UserInfoVO userDTO = getUser(id);
        if (userDTO != null) {
            redisTemplate.delete("user:"+id);
        }
    }


    /**
     * 设置注册验证码
     * @param mobile 手机号
     * @param code   验证码
     */
    public void setCode(String mobile, String code){
        redisTemplate.opsForValue().set("code:"+mobile, code, 5, TimeUnit.MINUTES);
    }

    /**
     * 获取验证码
     * @param mobile
     * @return
     */
    public String getCode(String mobile){
        String redisStr = redisTemplate.opsForValue().get("code:"+mobile);
        if(StrUtils.isEmpty(redisStr)){
            return null;
        }
        return redisStr;
    }

    /**
     * 删除验证码
     * @param mobile
     */
    public void delCode(String mobile){
        String code = getCode(mobile);
        if(StrUtils.isNotEmpty(code)){
            redisTemplate.delete("code:"+mobile);
        }
    }


 /*   *//**
     * 设置最新公告信息
     * @param vo
     *//*
    public void setMessage(MessageVO vo){
        redisTemplate.opsForValue().set(Constant.MESSAGE , JSON.toJSONString(vo), 1, TimeUnit.DAYS);
    }


    *//**
     * 获取最新公告信息
     * @return
     *//*
    public MessageVO getMessage(){
        String redisStr = redisTemplate.opsForValue().get(Constant.MESSAGE);
        if(StrUtils.isEmpty(redisStr)){
            return null;
        }
        return JSON.parseObject(redisStr, MessageVO.class);
    }

    *//**
     * 删除最新公告信息
     *//*
    public void delMessage(){
        MessageVO vo = getMessage();
        if(null != vo){
            redisTemplate.delete(Constant.MESSAGE);
        }
    }*/

}
